﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Xunit;
using M3G;

/*
 * ShaderVariableクラスは自分で直接newできない
 *    --> ShaderProgram.getAttributes();  // シェーダーが必要なAttribute変数
 *    --> ShaderProgram.getUnifroms();    // シェーダーが必要なUniform変数
 *    --> ShaderUniforms.getUniforms();   // 自分で設定したUniform変数
 */
/**
 * ShaderUniformsのoperator[]をオーバーロードしてunifs[id].Name でアクセスできるようにしようか?
 * どう考えてもその方が使いやすい。現在はunifs.ShaderVariable[id].Name
 * */
namespace MyTestProject {
    public class TestShaderVariable {

        [Fact]
        public void TestConstructor () {
            var name = "Minna-Dietlinde Wilcke";
            var type = ShaderVariableType.Vec3;
            var len  = 10;
            var unifs = new ShaderUniforms ();

            var minaid = unifs.AddUniform (name, type, len);
            var mina   = unifs.GetUniform (minaid);

            Assert.Equal (1, unifs.UniformCount);
            Assert.Equal (name, mina.Name);
            Assert.Equal (type, mina.Type);
            Assert.Equal (len, mina.ArraySize);
        }

    }
}
